package com.iwdnb.gkgz.application.strategy;

import java.util.List;

import com.iwdnb.gkgz.application.model.request.AddStrategyTradeStockDataRequest;
import com.iwdnb.gkgz.common.model.dto.StockDayData;
import com.iwdnb.gkgz.common.model.dto.StrategyTradeDTO;
import com.iwdnb.service.router.param.annotation.RouteParam;

/**
 * 股票回测服务
 */
public interface StockBackValidateService {


    void doAllBackValidate(@RouteParam(name = "request") AddStrategyTradeStockDataRequest request);


    /**
     * 查询到可回测的股票日期
     *
     * @param code
     * @param stockDayDataList
     * @param request
     * @return
     */
    List<StrategyTradeDTO> queryBackValidateDateList(String code, @RouteParam(name = "strategy") String strategy,
        List<StockDayData> stockDayDataList,
        AddStrategyTradeStockDataRequest request);

    void doBackValidate(String code, @RouteParam(name = "strategy") String strategy,
        List<StockDayData> stockDayDataList,
        List<StrategyTradeDTO> dateList);

    /**
     * 股票回测实际计算，有具体回测数据后，按可用时间做实际测算
     * @param strategy
     * @param buyBatchNum
     */
    void doCaculateBackValidate(String strategy, int buyBatchNum,String multipleFlag);

}
